在 PHP 中,setcookie() 函数设置的 Cookie 是通过 HTTP 响应头发送给客户端浏览器的,而 $_COOKIE 数组则是从客户端浏览器发送过来的请求头中提取的。因此,当在一次请求中调用 setcookie() 后立即尝试通过 $_COOKIE 获取该 Cookie 时是无法获取到的(不同于 ASP.NET 等机制)。
如果需要在设置 Cookie 后 立即 获取其值,可以手动将该值存储到一个变量中,或者在下一次请求时再通过 $_COOKIE 获取。例如:
setcookie("test", "value", time() + 3600);
$_COOKIE["test"] = "value"; // 手动设置,以便立即使用
echo $_COOKIE["test"]; // 输出 "value"
或者在下一次请求中再获取:
// 第一次请求
setcookie("test", "value", time() + 3600);
// 第二次请求
if (isset($_COOKIE["test"])) {
echo $_COOKIE["test"]; // 输出 "value"
}